// Engine Compile Config
// (c) jimon game studio

#ifndef JEH_CONFIG_ENGINE
#define JEH_CONFIG_ENGINE

//--------------------------------- Core Options

//-------- Main enesea options
#define JE_ENGINE_VERSION "0.0.3.9"
//#define JE_DEBUG

//-------- Platform
#define JE_WIN
//#define JE_LINUX
#define JE_PLATFORM_32BIT // TODO can we really need to change something in engine ? now theare no code depends on this options
//#define JE_PLATFORM_64BIT // TODO can we really need to change something in engine ? now theare no code depends on this options

//-------- Device
#define JE_DEVICE_WIN
//#define JE_DEVICE_LINUX

//-------- Compiler
#define JE_MSVC
//#define JE_MINGW // TODO find out, can we use JE_GCC instead
//#define JE_GCC

//-------- Core Support
#define JE_UNICODE
//#define JE_THREADS
//#define JE_ENABLE_SSE2 // TODO rename this to something better, beacause now it's seems like some shit tweak
#define JE_MEMORY_MANAGEMENT

//-------- Log Manager
#define JE_LOG_MACRO
#define JE_LOG_TOFILE
#define JE_LOG_TOCONSOLE
#define JE_LOG_FILE "EngineLog.txt"

//-------- Dynamic Array Options
//#define JE_DYNAMICARRAY_OPTIMALSORT
//#define JE_DYNAMICARRAY_PENALTYDELTATIME 5000
#define JE_DYNAMICARRAY_OPTIMALBLOCKSIZE 64

//--------------------------------- Modules Options

//-------- Script Manager
//#define JE_SCRIPT // TODO write this
//#define JE_SCRIPT_ANGELSCRIPT // TODO write this

//-------- Data Base Manager
//#define JE_DATABASE // TODO write this
//#define JE_DATABASE_SQLITE // TODO write this

//-------- Media Manager
//#define JE_MEDIA // TODO write this
//#define JE_MEDIA_IMAGE // TODO write this
//#define JE_MEDIA_MODEL // TODO write this
//#define JE_MEDIA_MATERIAL // TODO write this
//#define JE_MEDIA_SHADERMATERIAL // TODO write this
//#define JE_MEDIA_SOUND // TODO write this

//-------- Render
#define JE_RENDER // TODO write this
#define JE_RENDER_OPENGL
#define JE_RENDER_OPENGL_SUPPORT_OPENGL3
//#define JE_RENDER_OPENGL_EXTENSIONS_SAFEMODE
//#define JE_RENDER_OPENGL_DISABLE_OLD_FUNCTIONAL
#define JE_MAX_MATERIAL_TEXTURES 8
#define JE_MAX_RENDERTEXTURETARGET_TEXTURES 5
#define JE_MAX_SHADER_VERTEX_LAYERS 9
#define JE_MAX_SHADER_GLOBAL_TECHNIQUES 2

//-------- Sound
//#define JE_SOUND
//#define JE_SOUND_SQUALL

//-------- Resource Options
//#define JE_RESOURCES_SOUND_USEBLOBBUFFER
//#define JE_RESOURCES_IMAGE_USEBLOBBUFFER

//--------------------------------- Auto Options

#ifdef JE_MSVC
	#ifdef _DEBUG
		#define JE_DEBUG
	#endif
	#ifdef _USRDLL
		#define JE_ENGINE_DLL
	#endif
#endif

//import-export api
#ifdef JE_ENGINE_DLL
	#ifdef ENGINE_EXPORTS
		#define JE_ENGINE_FUNCTION_API extern "C" __declspec(dllexport)
	#else
		#define JE_ENGINE_FUNCTION_API extern "C" __declspec(dllimport)
	#endif
#else
	#define JE_ENGINE_FUNCTION_API extern "C"
#endif
#define JE_ENGINE_FUNCTION_CALL


#endif
